﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace 定时器与锁
{
    class Program
    {
        static void Main(string[] args)
        {
            Timerd();
            Console.ReadKey();
           
        }


        static void Timerd()
        {
            ThreadPool.SetMaxThreads(1000,1000);
            TimerCallback callBack = new TimerCallback(ThreadPoolMessage);
            Timer t = new Timer(callBack, "Hello jet! ", 0, 1000);
        }


        #region  Interlocked
        /***
        * Interlocked存在于System.Thread命名空间内，它的操作比Monitor使用更简单。
        * 它存在CompareExchange、Decrement、Exchange、Increment等常用方法让参数在安全的情况进行数据交换。
        * Increment、Decrement 可以使参数安全地加1或减1并返回递增后的新值。
         ****/



        #endregion

        //显示线程池现状
        static void ThreadPoolMessage(object data)
        {
            int a, b;
            ThreadPool.GetAvailableThreads(out a, out b);
            Console.WriteLine("data：【"+data+"】"+DateTime.Now+";线程id："+ Thread.CurrentThread.ManagedThreadId+ "```" +Thread.CurrentThread.IsBackground.ToString() +"a:"+a+"b:"+b);
        }



       


    }
}
